如果有從永豐銀行API那邊下載過C#版的豐收款QPay.SampleCode,應該能發現他們目前的專案是用 .NET Framework 4.5.2 進行開發,code也是集中在QPayToolkit.cs這個檔案
今天就來介紹一下sample code使用HttpClient呼叫API的部分
微軟在.NET Framework 4.5的時候推出HttpClient,以取代原本的WebClient,但是卻有一些連線端耗盡及DNS異動問題。所以微軟又推出了HttpClientFactory來改善這些情況。
在.Net Core 3.1框架,也有支援HttpClientFactory,首先必須在Startup.cs的ConfigureServices去註冊
services.AddHttpClient();
回去原本的程式碼,在一開始利用相依性注入(DI)
        private readonly IHttpClientFactory _clientFactory;
        public NonceRepository(IHttpClientFactory clientFactory)
        {
            _clientFactory = clientFactory;
        }
接下來就進入到發出Post請求的部分了,其實HttpClientFactory與HttpClient實作的程式碼差異並不會太大~
        public async Task PushMessage()
        {
            // 建立 HttpClient 實例
            var httpClient = _clientFactory.CreateClient();
            httpClient.BaseAddress = new Uri("https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/");
            var message = "shopNo=xxx";
            var json = JsonConvert.SerializeObject(message);
            HttpContent contentPost = new StringContent(json, Encoding.UTF8, "application/json");
            await httpClient.PostAsync("Nonce", contentPost);
        }
至於實際在Startup.cs設定HttpClientFactory以及實際調用API的情況,明天會再繼續補充~
See you